package com.ctshk.rpc.order.season.req;

import com.ctshk.rpc.order.season.dto.SeasonOrderInsuranceDTO;
import com.ctshk.rpc.order.season.dto.SeasonOrderPackageProductDTO;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.List;

/**
 * @author 杨林
 * @version 1.0
 * @date 2021/3/24 10:38
 */
@Data
@ApiModel(value = "SeasonOrderReq对象", description = "填写固定套票订单信息req")
public class SeasonOrderReq extends SeasonOrderPackageProductDTO implements Serializable {

    @ApiModelProperty(value = "订单id 第一次的时候不传，后面则需要传")
    private Long orderId;

    @ApiModelProperty(value = "产品id")
    private Long productId;

    @ApiModelProperty(value = "产品类型(1 固定套票 2 动态打包)")
    private Integer productType;

    @ApiModelProperty(value = "出发开始日期 固定套票用到")
    private LocalDate startDate;

    @ApiModelProperty(value = "行程天数")
    // @Pattern(regexp = "^[0-9]*$", message = "行程夜晚数必须是数字")
    private String travelDays;

    @ApiModelProperty(value = "行程夜晚数")
    //@Pattern(regexp = "^[0-9]*$", message = "行程夜晚数必须是数字")
    private Integer travelNights;


    //酒店 房间数 默认1间
    private Integer roomNum = 1;
    @ApiModelProperty(value = "儿童数")
    private Integer child;
    @ApiModelProperty(value = "成人数")
    private Integer adult;

    @ApiModelProperty(value = "套票的选择的产品 1:机票 2:船票  3:酒店 4:巴士 5:火车票 6:景点门票 7:当地玩乐 8商品 多个以逗号分隔, ")
    //@NotNull(message = "套票选择产品不能为空")
    private String seasonPackageProductFlag;

    @ApiModelProperty(value = "备注")
    private String remark;
    @ApiModelProperty(value = "收据抬头")
    private String receiptTitle;

    @ApiModelProperty(value = "优惠券代码")
    private String couponCode;

    @ApiModelProperty(value = "优惠券抵扣金额")
    private BigDecimal couponDeduction;

    @ApiModelProperty(value = "会员积分抵扣(100积分抵扣1元人民币,需换算)")
    private BigDecimal integralDeduction;

    @ApiModelProperty(value = "积分")
    private Integer integral;

    @ApiModelProperty(value = "使用积分")
    private Integer usingPoints;

    @ApiModelProperty(value = "会员ID")
    private Long memberId;

    @ApiModelProperty(value = "套票金额")
    private BigDecimal seasonAmount;

    @ApiModelProperty(value = "保险费用")
    private BigDecimal insuranceAmount;

    @ApiModelProperty(value = "保险数量")
    private Integer insuranceNumber;

    @ApiModelProperty(value = "是否购买保险 0 不买 1购买", required = true)
    private Integer buyInsurance;

    @ApiModelProperty(value = "订单总额")
    private BigDecimal orderAmount;

    @ApiModelProperty(value = "应收金额")
    private BigDecimal receivableAmount;

    @ApiModelProperty(value = "联系人姓")
    private String surname;

    @ApiModelProperty(value = "联系人名")
    private String name;

    @ApiModelProperty(value = "联系人姓名")
    private String contactName;

    @ApiModelProperty(value = "联系人手机")
    private String contactMobile;

    @ApiModelProperty(value = "联系人手机区号id")
    private Long contactMobileAreaCodeId;

    @ApiModelProperty(value = "联系人手机区号")
    private String contactMobileAreaCode;

    @ApiModelProperty(value = "联系人邮箱")
    private String contactEmail;

    @ApiModelProperty(value = "称谓(1:先生;2:女士;3:小姐;4:男童;5:女童)")
    private Integer appellation;

    @ApiModelProperty(value = "旅客信息列表", required = true)
    private List<SeasonOrderTouristDataReq> seasonOrderTouristDataList;

    @ApiModelProperty(value = "保险信息列表")
    private List<SeasonOrderInsuranceDTO> seasonOrderInsuranceDataList;

    @ApiModelProperty(value = "负责人id")
    private Long chargeUserId;

    @ApiModelProperty(value = "渠道id")
    private Long channelId;
}